Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO
■RS-232C BIOS
INT 19h - Function 00h(BIOS)
分類 RS-232C BIOS
名前 RS-232C BIOSの初期化(シングルモード)
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=00h:チャネル0(本体内蔵RS-232C)指定
10h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
20h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
AL=転送速度■[チャネル0のみ有効]
00h= 75bps
01h= 150bps
02h= 300bps
03h= 600bps
04h=1200bps
05h=2400bps
06h=4800bps
07h=9600bps
08h=19200bps■[19200bps対応機のみ]
* サポート外の数値を指定すると1200bpsに設定される
BH=送信時タイムアウト時間(単位:500ms)
* 範囲は01〜FFh。00hを指定するとデフォルト値(02h)
BL=受信時タイムアウト時間(単位:500ms)
* 範囲は01〜FFh。00hを指定するとデフォルト値
(ノーマルモード1Eh,ハイレゾモード3Ch)
CH=8251Aのモードワード(非同期モード)
bit 7,6:ストップビット長
11b=2ビット
10b=1.5ビット
01b=1ビット
bit 5 :パリティ指定
1=偶数パリティ
0=奇数パリティ
bit 4 :パリティ有無
1=あり
0=なし
bit 3,2:キャラクタ長
11b=8ビット
10b=7ビット
01b=6ビット
00b=5ビット
bit 1,0:クロックレート
11b=64倍
10b=16倍
CL=8251Aのコマンドワード
bit 6:内部リセット
1=する
0=しない
bit 5:RTS端子
1=ON
0=OFF
bit 4:エラーフラグリセット
1=する
0=しない
bit 3:ブレイク信号送信
1=する
0=しない
bit 2:受信許可
1=許可
0=禁止
bit 1:DTR端子
1=ON
0=OFF
bit 0:送信許可
1=許可
0=禁止
ES:DI=バッファコントロールブロックの先頭アドレス
DX=受信バッファサイズ(単位:バイト)
出力 AH=リターンコード
00h=正常終了
04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
接続されていない■[ハイレゾ]
AL=不定
解説 o 調歩同期モードでRS-232C BIOSを初期化する。受信・送信時の
XON/XOFFフロー制御は行わない。
o RS-232C BIOSでは、同期通信はサポートしていない。
o 受信バッファは、ES:DIで指定するバッファコントロールブロックの直後に
確保される。
受信バッファの先頭アドレスは、ノーマルモードとPC-98LT・HAはES:DI+14h、
ハイレゾモードはES:DI+18h。
受信バッファの末尾は、全機種ともES:DI+14h+DX-1になる。ハイレゾモード
は、バッファコントロールブロックのサイズがノーマルモードより4バイト
多いが、互換性をとるために実際の受信バッファサイズをDXで指定された
値より4バイト分減らしているためである。
o 受信バッファに格納可能な受信文字数は、実際の受信バッファサイズの半分
になる。シングルモードでは、受信バッファに、受信文字(1バイト)と同時に、
その文字を受信したときの8251Aのステータス(1バイト)を格納しているため
である。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションをトラップ
する。このとき、ファンクションの機能やレジスタインターフェースはBIOSと
非互換となるので注意。INT 19h - Function 00h(RSDRV)参照。
o ハイレゾモードのとき、チャネル1,2の転送速度は拡張RS-232C
インターフェースボード上のDIP SWで設定する。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
u 19200bps対応機かどうかの判別は、F8E8:0002h(ノーマル)または
FFE8:0002h(ハイレゾ)を参照して行う。
本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
モードでも、BIOSで19200bpsが使用できる。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連 INT 19h - Function 01h
INT 19h - Function 07h[ハイレゾ]
0000:0556h
0000:055Bh
0000:05C1h
0000:05F0h
0000:05F4h
F8E8:0002h bit 2[ノーマル]
FFE8:0002h bit 2[ハイレゾ]
I/O 0030h
I/O 0035h
I/O 0075h
I/O 00B0h
INT 19h - Function 01h(BIOS)
分類 RS-232C BIOS
名前 フロー制御を伴う初期化(シングルモード)
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=01h:チャネル0(本体内蔵RS-232C)指定
11h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
21h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
AL=転送速度■[チャネル0のみ有効]
* INT 19h - Function 00h(BIOS)と同じ
BH=送信時タイムアウト時間(単位:500ms)
* INT 19h - Function 00h(BIOS)と同じ
BL=受信時タイムアウト時間(単位:500ms)
* INT 19h - Function 00h(BIOS)と同じ
CH=8251Aのモードワード(非同期モード)
* INT 19h - Function 00h(BIOS)と同じ
CL=8251Aのコマンドワード
* INT 19h - Function 00h(BIOS)と同じ
ES:DI=バッファコントロールブロックの先頭アドレス
DX=受信バッファサイズ(単位:バイト)
出力 AH=リターンコード
00h=正常終了
04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
接続されていない■[ハイレゾ]
AL=不定
解説 o 調歩同期モードでRS-232C BIOSを初期化する。受信時のXON/XOFFフロー制御を
行う。
送信時のXON/XOFFフロー制御は行わない。ノーマルモードのRS-232C BIOSは、
送信時のXON/XOFFフロー制御はサポートしていない。
そのほかはINT 19h - Function 00h(BIOS)と同じ。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 01h(RSDRV)参照。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
関連 INT 19h - Function 00h
INT 19h - Function 07h[ハイレゾ]
I/O 0030h
I/O 0035h
I/O 0075h
I/O 00B0h
INT 19h - Function 02h(BIOS)
分類 RS-232C BIOS
名前 受信データ長の取得
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=02h:チャネル0(本体内蔵RS-232C)指定
12h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
22h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力 AH=リターンコード
00h=正常終了
01h=RS-232C BIOSが初期化されていない
02h=受信バッファオーバーフロー
CX=受信バッファ内の受信文字数
解説 o 受信バッファに格納されている受信文字数を調べる。
シングルモードのとき、および拡張モードで受信バッファの管理を
ワード単位に指定しているときは、受信文字とステータスが2バイト一組で
受信バッファに格納されるが、この場合もこのファンクションで返される
値は受信文字数である。
u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
しなければならない。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 02h(RSDRV)参照。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
関連
INT 19h - Function 03h(BIOS)
分類 RS-232C BIOS
名前 データの送信
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=03h:チャネル0(本体内蔵RS-232C)指定
13h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
23h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
AL=送信データ
CL=参照ステータスビット■[拡張モード]
bit 7=DSR端子
bit 6=CTS端子
bit 5〜3=000bを指定
bit 2=TxEMPTYフラグ
bit 1,0=00bを指定
出力 AH=リターンコード
00h=正常終了
01h=RS-232C BIOSが初期化されていない
02h=受信バッファオーバーフロー
03h=タイムアウト
05h=送信時XON/XOFF有効時、XOFF受信により送信停止中■[ハイレゾ]
AH=不定
解説 o 1バイトのデータを送信する。
送信データのバッファリングは行わない。
u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
しなければならない。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 03h(RSDRV)参照。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連
INT 19h - Function 04h(BIOS)
分類 RS-232C BIOS
名前 データの受信
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=04h:チャネル0(本体内蔵RS-232C)指定
14h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
24h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力 AH=リターンコード
00h=正常終了
01h=RS-232C BIOSが初期化されていない
02h=受信バッファオーバーフロー
03h=タイムアウト
CH=受信データ
CL=データ受信時のステータス
bit 7:DSR
1=ON
0=OFF
bit 6:BREAK
1=検出
0=非検出
bit 5:フレーミングエラー
1=検出
0=非検出
bit 4:オーバーランエラー
1=検出
0=非検出
bit 3:パリティエラー
1=検出
0=非検出
bit 2:■[ノーマル]TxEMPTY
1=送信バッファエンプティ
0=送信バッファフル
bit 2:■[ハイレゾ]システムポートステータス CI#
1=OFF
0=ON
bit 1:システムポートステータス CTS#
1=OFF
0=ON
bit 0:システムポートステータス CD#
1=OFF
0=ON
解説 o 受信バッファから1バイト分の受信データを取り出し、受信データと
ステータスを出力する。
受信バッファ内に受信データがなければ、初期化時に設定された
受信時タイムアウト時間だけ待つ。
o 拡張モードで受信バッファの管理をバイト単位に指定しているときは、
CLに現在のステータスを返す。
u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
しなければならない。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 04h(RSDRV)参照。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連
INT 19h - Function 05h(BIOS)
分類 RS-232C BIOS
名前 8251Aへのコマンド出力
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=05h:チャネル0(本体内蔵RS-232C)指定
15h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
25h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
AL=8251Aに出力するコマンド
* INT 19h - Function 00h(BIOS)と同じ
出力 AH=リターンコード
00h=正常終了
01h=RS-232C BIOSが初期化されていない
02h=受信バッファオーバーフロー
解説 o 8251Aにコマンドワードを書き込む。
u テクニカルデータブックには「8251Aに出力するコマンド」をCLで指定
するように記述されているが、実際にはALで指定する。
u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
しなければならない。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 05h(RSDRV)参照。
u PC-98HAテクニカルデータブックには、リターンコードがALで返されると
記述されているが、実際はAHに返される。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,D5hの
レジスタインターフェースはINT 19hと同じ。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連
INT 19h - Function 06h(BIOS)
分類 RS-232C BIOS
名前 ステータスの取得
対象 ノーマル,ハイレゾ,PC-98LT・HA
入力 AH=06h:チャネル0(本体内蔵RS-232C)指定
16h:チャネル1(拡張RS-232Cインターフェース)指定■[ハイレゾ]
26h:チャネル2(拡張RS-232Cインターフェース)指定■[ハイレゾ]
出力 AH=リターンコード
00h=正常終了
01h=RS-232Cが初期化されていない
02h=受信バッファオーバーフロー
CH=8251Aステータス
bit 7:DSR
1=ON
0=OFF
bit 6:BREAK
1=検出
0=非検出
bit 5:フレーミングエラー
1=検出
0=非検出
bit 4:オーバーランエラー
1=検出
0=非検出
bit 3:パリティエラー
1=検出
0=非検出
bit 2:TxEMPTY
1=送信バッファエンプティ
0=送信バッファフル
bit 1:RxREADY
1=受信キャラクタあり
0=受信キャラクタなし
bit 0:TxREADY
1=送信レディ
0=送信ビジー
CL=モデムステータス
bit 7:CI#
1=OFF
0=ON
* PC-9801初代はCI#をサポートしていない。常に0。
bit 6:CTS#
1=OFF
0=ON
bit 5:CD#
1=OFF
0=ON
bit 4〜0:リザーブ
解説 o RS-232Cの現在のステータスを取得する。
u リターンコードで受信バッファオーバーフロー(AH=02h)の通知を一度
受け取ると、BIOS内部でオーバーフローを示しているフラグがクリアされる。
o 拡張モードで受信バッファがオーバーフローしたときは、8251Aを初期化
しなければならない。
u ノーマルモードでは、MS-DOSのAUXドライバがこのファンクションを
トラップする。このとき、ファンクションの機能やレジスタインターフェース
はBIOSと非互換となるので注意。INT 19h - Function 06h(RSDRV)参照。
o ノーマルモードでは、チャネル毎に別の割り込みを割り当てている。
チャネル0=INT 19h, チャネル1=INT D4h, チャネル2=INT D5h。INT D4h,
INT D5hのレジスタインターフェースはINT 19hと同じ。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連 I/O 0033h
INT 19h - Function 07h(BIOS)
分類 RS-232C BIOS
名前 RS-232C BIOSの初期化(拡張モード)
対象 ハイレゾ
入力 AH=07h:チャネル0(本体内蔵RS-232C)指定
17h:チャネル1(拡張RS-232Cインターフェース)指定
27h:チャネル2(拡張RS-232Cインターフェース)指定
AL=転送速度■[チャネル0のみ有効]
* INT 19h - Function 00h(BIOS)と同じ
BX=BIOS制御情報
bit 15:リザーブ
bit 14:SI/SO制御
1= 行う
0= 行わない
bit 13:送信側Xフロー制御
1= あり
0= なし
bit 12:受信側Xフロー制御
1= あり
0= なし
bit 11:受信バッファフル時のER(DTR)信号制御
1= する(ER OFFする)
0= しない
bit 10:受信バッファフル時のRS(RTS)信号制御
1= する(RS OFFする)
0= しない
bit 9,8:受信したDEL(7Fh/FFh)の処理
11b= 無視する
10b= BS(08h)に変換
01b= NULL(00h)に変換
00b= 無変換
bit 7〜1:リザーブ
bit 0:受信バッファの管理
1= ワード単位
0= バイト単位
CH=8251Aのモードワード(非同期モード)
* INT 19h - Function 00h(BIOS)と同じ
CL=8251Aのコマンドワード
* INT 19h - Function 00h(BIOS)と同じ
DX=受信バッファサイズ
ES:DI=バッファコントロールブロックの先頭アドレス
出力 AH=リターンコード
00h=正常終了
04h=チャネル1,2指定時に、拡張RS-232Cインターフェースボードが
接続されていない
解説 o 調歩同期モードでRS-232C BIOSを初期化する。
受信・送信時のXON/XOFFフロー制御を選択することも可能。
このファンクションで初期化すると、毎受信割り込み終了時(EOI発行後)に
INT 1Fh - Function 83hを実行する。
o 受信バッファは、ES:DIで指定するバッファコントロールブロックの直後に
確保される。
受信バッファの先頭アドレスはES:DI+18h、末尾はES:DI+18h+DX-1になる。
o 受信バッファに格納可能な受信文字数は、受信バッファの管理をワード単位に
指定した(BX bit 0=1)とき、実際の受信バッファサイズの半分になる。受信
バッファに、受信文字(1バイト)と同時に、その文字を受信したときの8251A
のステータス(1バイト)を格納しているためである。
受信バッファの管理をバイト単位に指定した(BX bit 0=0)ときは、実際の受信
バッファサイズと同じ受信文字数を格納できる。
o そのほかは、INT 19h - Function 00h(BIOS)と同じ。
o バッファコントロールブロックなどの詳細については、
テクニカルデータブック参照。
関連 INT 19h - Function 00h(BIOS)
INT 1Fh - Function 83h[ハイレゾ]
I/O 0030h
I/O 0035h
I/O 0075h
I/O 00B0h